
//***************************************************************************************************
enum elem_info_types
{
    INFO_TYPE_NUMBER = 0,
    INFO_TYPE_ACTION = 1
};
//***************************************************************************************************

//***************************************************************************************************
enum PRINT_TREE_MODES
{
    PRE_ORDER = 0,
    IN_ORDER = 1,
    POST_ORDER = 2
};
//***************************************************************************************************

//***************************************************************************************************
typedef struct
{
    double  info;
    char    info_type;
} elem_info;
//***************************************************************************************************

//***************************************************************************************************
struct tree_elem_t
{
    elem_info data;
    struct tree_elem_t *link[2];
};
//***************************************************************************************************

//***************************************************************************************************
struct tree_elem_t *node_constructor (double info, char info_type);
struct tree_elem_t *tree_clone (struct tree_elem_t *tree);
void                tree_destructor  (struct tree_elem_t *tree);
void                tree_print       (const struct tree_elem_t *tree, FILE *target_source,
                                      const char mode);
//***************************************************************************************************
